//
//  XYO2OModuleService.h
//  O2O_iOS
//
//  Created by 唐海洋 on 2021/7/30.
//

#ifndef XYO2OModuleService_h
#define XYO2OModuleService_h
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

typedef void(^XYO2OWriteOffHandler)(NSDictionary *responseDic);

typedef void(^XYO2ORyloginHandler)(NSString *ryloginUrl);

typedef enum : NSUInteger {
    XYO2OUrlType_unknown = 0,       // 未知类型
    XYO2OUrlType_O2O = 1,           // 惠生活
    XYO2OUrlType_INTEGRAL = 2,      // 积分商城
    XYO2OUrlType_RECRUITMENT = 3,   // 云招聘
    XYO2OUrlType_COMMUNITY = 4,     // 数字社区
    XYO2OUrlType_VENUES = 5,        // 云场馆
    XYO2OUrlType_activity = 6,      // 公有云活动
    XYO2OUrlType_writeOff = 7,      // 核销奖品
    XYO2OUrlType_driftBottle = 8,   // 漂流瓶
    XYO2OUrlType_standingsVerify = 9, // 积分商城核销
    XYO2OUrlType_signUpVerify = 10, // 报名核销
    XYO2OUrlType_eedsCommunity = 11, // 鄂尔多斯社区
    XYO2OUrlType_realEstate = 12, // 云房产
} XYO2OUrlType;


@protocol XYO2OModuleServeDelegate <NSObject>

@required

#warning - 必须要实现 - 否则影响前端代码执行
/// 必须要实现 - 否则影响前端代码执行
/// 获取/绑定用户id
/// @param userIdBlock block
- (void)bindCurrentUserId:(void(^)(NSString *userId))userIdBlock;


@optional

/// 免登
/// @param ryredirect 免登参数
/// @param application 免登参数
/// @param bindType  YES--主动发起,回调回来会刷新页面,NO--h5 发起,回调不会主动刷新页面  bindType 为 YES是可自行决定是否进行免登操作
/// @param ryBlock : ryLoginUrl--免登后的 url, bindType -- SDK 传出的 bindType 直接返回无需处理,  ryredirect -- SDK 传出的 url,直接返回无需处理
- (void)bindryLoginUrlWith:(NSString *)ryredirect application:(NSString *)application bindType:(BOOL)bindType ryLogin:(void(^)(NSString *ryLoginUrl, BOOL bindType, NSString *ryredirect))ryBlock;


/// 公有云获取token - 替换免登逻辑 - 参考XYWebViewJSBridgeManager
- (void)getCloudTokenWith:(NSDictionary *)parameters block:(void(^)(NSDictionary *data))block;

/// 获取用户信息 - 参考XYWebViewJSBridgeManager
- (void)getUserInfoWith:(NSDictionary *)parameters block:(void(^)(NSDictionary *data))block;

/// 页面是否可以侧滑返回 - 通过webView canGoBack 确定
- (void)interactivePopDisabledWith:(BOOL)canGoBack;

/// 宣城钱包-订单支付
- (void)payOrderByWallet:(NSDictionary *)parameters;

/// 获取三方（秭归：nickname、userid、sign、nonce、sign）用户信息
/// @param completeBlock 完成回调
- (void)bindUserInfoWithComplete:(void(^)(NSDictionary *info))completeBlock;

/// 分享
/// @param shareDic 分享参数：{"title":"标题", "description":"描述", "url":"链接",  "imageUrl":"分享图片",  "minPath":"小程序路径", "minId":"小程序id", "minType":2}
/// @param getPosterBlock 获取海报block，如果调用了 native 调用js 获取海报的方法
- (void)jsShareWithParameter:(NSDictionary *)shareDic getPosterBlock:(void(^)(BOOL getPoter))getPosterBlock;

/// 生成海报
/// @param imageString 海报图片 base64 字符串
- (void)jsPosterWithImagestring:(NSString *)imageString;

/// 原生打开新页
/// @param dict 参数 map
- (void)jsOpenNewPage:(NSDictionary *)dict;

/// 打开兑吧积分商城
/// @param dict 参数 map
- (void)jsOpenDuiBaMallPage:(NSDictionary *)dict;

/// 签到任务，跳转客户端首⻚、指定频道(通过频道Id)
/// @param dict 参数 map
- (void)jsSignInTask:(NSDictionary *)dict;

/// 签到任务，跳转客户端首⻚、指定频道(通过频道code)、自定义频道
/// @param dict 参数 map
- (void)jsFinishTask:(NSDictionary *)dict;

/// 参与签到任务活动（通知客户端清理上报缓存）
/// @param dict 参数 map
- (void)jsJoinSignInTask:(NSDictionary *)dict;

/// o2oWebView滚动
- (void)xy_scrollViewDidScroll:(UIScrollView *)scrollView;

@end


NS_ASSUME_NONNULL_END

#endif /* XYO2OModuleService_h */
